package de.h_da.fbi.cg.pointcloud.util;

import java.util.ArrayList;
import java.util.HashSet;

/**
 * @author Nicolas Gramlich
 * @since 12:34:44 - 11.11.2010
 */
public class UniqueArrayList<T> extends ArrayList<T> {
	// ===========================================================
	// Constants
	// ===========================================================

	private static final long serialVersionUID = 266348851591356077L;

	// ===========================================================
	// Fields
	// ===========================================================

	private final HashSet<T> mHashSet = new HashSet<T>();

	// ===========================================================
	// Constructors
	// ===========================================================

	// ===========================================================
	// Getter & Setter
	// ===========================================================

	// ===========================================================
	// Methods for/from SuperClass/Interfaces
	// ===========================================================

	@Override
	public boolean add(final T pItem) {
		if(this.mHashSet.add(pItem)){
			return super.add(pItem);
		} else {
			return false;
		}
	}

	@Override
	public boolean remove(final Object pItem) {
		if(this.mHashSet.remove(pItem)) {
			return super.remove(pItem);
		} else {
			return false;
		}
	}

	// ===========================================================
	// Methods
	// ===========================================================

	// ===========================================================
	// Inner and Anonymous Classes
	// ===========================================================
}
